import { initDatabase, saveUserConfig, getUserConfig, getAllUserConfigs, deleteUserConfig } from '../utils/database';

// 文本配置接口
interface TextConfig {
    title: string;
    content: string;
    fontSize: number;
    color: string;
    fontFamily: string;
}

// 测试函数
export const testDatabaseStorage = async () => {

    try {
        // 1. 初始化数据库
        const initSuccess = await initDatabase();
        if (!initSuccess) {
            throw new Error('数据库初始化失败');
        }

        // 2. 准备测试数据
        const userId = 'admin';
        const configType = '文本配置';
        const textConfig: TextConfig = {
            title: '测试标题',
            content: '这是一段测试文本内容',
            fontSize: 16,
            color: '#333333',
            fontFamily: 'Microsoft YaHei',
        };


        // 3. 保存用户配置
        const saveSuccess = await saveUserConfig(userId, configType, textConfig);
        if (!saveSuccess) {
            throw new Error('保存配置失败');
        }

        // 4. 获取刚保存的配置
        const retrievedConfig = await getUserConfig(userId, configType);

        // 5. 验证数据一致性
        if (JSON.stringify(retrievedConfig) === JSON.stringify(textConfig)) {
        } else {
        }

        // 6. 更新配置测试
        const updatedConfig: TextConfig = {
            ...textConfig,
            title: '更新后的标题',
            fontSize: 18,
            color: '#666666',
        };

        await saveUserConfig(userId, configType, updatedConfig);

        const updatedRetrieved = await getUserConfig(userId, configType);

        // 7. 获取用户所有配置
        const allConfigs = await getAllUserConfigs(userId);

        // 8. 测试多种配置类型
        await saveUserConfig(userId, '基本配置', {
            theme: 'dark',
            language: 'zh-cn',
        });
        await saveUserConfig(userId, '高级配置', {
            autoSave: true,
            backupInterval: 300,
        });

        const allConfigsAfter = await getAllUserConfigs(userId);

        return true;
    } catch (error) {
        console.error('❌ 测试失败:', error);
        return false;
    }
};

// 清理测试数据
export const cleanupTestData = async () => {
    try {
        const userId = 'admin';
        await deleteUserConfig(userId, '文本配置');
        await deleteUserConfig(userId, '基本配置');
        await deleteUserConfig(userId, '高级配置');
    } catch (error) {
        console.error('清理测试数据失败:', error);
    }
};

// 如果直接运行此文件，执行测试
if (typeof window !== 'undefined') {
    // 浏览器环境
    (window as any).testDatabaseStorage = testDatabaseStorage;
    (window as any).cleanupTestData = cleanupTestData;

}
